package cn.wolfcode.wolf2w.elasticsearch.service;

import cn.wolfcode.wolf2w.domain.Destination;
import cn.wolfcode.wolf2w.domain.Strategy;
import cn.wolfcode.wolf2w.domain.Travel;
import cn.wolfcode.wolf2w.domain.UserInfo;
import cn.wolfcode.wolf2w.elasticsearch.query.SearchQueryObject;
import cn.wolfcode.wolf2w.elasticsearch.vo.SearchResultVO;
import cn.wolfcode.wolf2w.util.ParamMap;
import org.springframework.data.domain.Page;

import java.util.Map;

/**
 * 搜索
 */
public interface ISearchService {
	/**
	 * 搜索目的地
	 * @param qo
	 * @return
	 */
	ParamMap searchDest(SearchQueryObject qo) ;

	/**
	 * 搜索攻略
	 * @param qo
	 * @return
	 */
	ParamMap searchStrategy(SearchQueryObject qo) ;

	/**
	 * 搜索游记
	 * @param qo
	 * @return
	 */
	ParamMap  searchTravel(SearchQueryObject qo) ;

	/**
	 * 搜索用户
	 * @param qo
	 * @return
	 */
	ParamMap  searchUser(SearchQueryObject qo) ;

	/**
	 * 搜索全部
	 * @param qo
	 * @return
	 */
	ParamMap searchAll(SearchQueryObject qo) ;
	/**
	 * 全文搜索 + 高亮显示
	 * @param index 索引
	 * @param type  类型
	 * @param clz
	 * @param qo
	 * @param fields
	 * @param <T>
	 * @return 带有分页的全文搜索(高亮显示)结果集
	 */
	<T> Page<T> searchWithHighlight(String index, String type,Class<T> clz, SearchQueryObject qo, String... fields);
}
